package com.itHsuSE.experiment;

public class Experiment2_2 {
    public static void main(String[] args) {
        // 创建一个People类的对象people1，表示一个普通人
        People people1 = new People("john", 12, '男');

        // 创建一个Student类的对象people2，表示一个学生，由于继承关系，可以使用People类的引用
        People people2 = new Student("carl", 13, '男', "0301");

        // 创建一个Teacher类的对象people3，表示一个老师，同样可以使用People类的引用
        People people3 = new Teacher("sarah", 22, '女', 10000);

        // 调用各对象的printInfo()方法，打印个人信息
        people1.printInfo();
        people2.printInfo();
        people3.printInfo();
    }
}

// People父类
class People {
    private String name; // 姓名
    private int age; // 年龄
    private char sex; // 性别

    // 无参构造函数
    public People() {

    }

    // 有参构造函数
    public People(String name, int age, char sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    // 打印个人信息
    public void printInfo() {
        System.out.println("姓名：" + getName() + "\t年龄：" + getAge() + "\t性别：" + getSex());
    }

    // 获取姓名
    public String getName() {
        return name;
    }

    // 设置姓名
    public void setName(String name) {
        this.name = name;
    }

    // 获取年龄
    public int getAge() {
        return age;
    }

    // 设置年龄
    public void setAge(int age) {
        this.age = age;
    }

    // 获取性别
    public char getSex() {
        return sex;
    }

    // 设置性别
    public void setSex(char sex) {
        this.sex = sex;
    }
}

// Student子类继承父类People
class Student extends People {
    private String id; // 学号

    // 学生类的有参构造函数，调用父类的有参构造函数初始化共有属性
    public Student(String name, int age, char sex, String id) {
        super(name, age, sex);
        this.id = id;
    }

    // 重写父类的printInfo()方法，以打印学生信息
    @Override
    public void printInfo() {
        System.out.println("姓名：" + getName() + "\t年龄：" + getAge() + "\t性别：" + getSex() + "\t学号：" + getId());
    }

    // 获取学号
    public String getId() {
        return id;
    }

    // 设置学号
    public void setId(String id) {
        this.id = id;
    }
}

// Teacher子类继承父类People
class Teacher extends People {
    private double salary; // 薪水

    // 老师类的有参构造函数，调用父类的有参构造函数初始化共有属性
    public Teacher(String name, int age, char sex, double salary) {
        super(name, age, sex);
        this.salary = salary;
    }

    // 重写父类的printInfo()方法，以打印老师信息
    @Override
    public void printInfo() {
        System.out.println("姓名：" + getName() + "\t年龄：" + getAge() + "\t性别：" + getSex() + "\t薪水：" + getSalary());
    }

    // 获取薪水
    public double getSalary() {
        return salary;
    }

    // 设置薪水
    public void setSalary(double salary) {
        this.salary = salary;
    }
}

